﻿import com.dinmax.flash.draw.utilities.*

class Barredor {
	private var nInterval:Number;
	private var nNumero:Number=10; //-> numero que dice cuantos pixels por intervalo va a aumentar/disminuir 
	private var coef:Number=0.8; //-> factor de velocidad
	private var Mask:MovieClip;
	private var Target:MovieClip;
	private var funcionando:Boolean;
	private var listener:Object;
	
	function Barredor(clip:MovieClip, velocidad:Number, direccion:String){
		var clipMask:MovieClip=clip._parent.createEmptyMovieClip("b"+clip._name, clip._parent.getNextHighestDepth());
		var rClipMask:Rectangulo=new Rectangulo(clipMask, clip._x,clip._y, clip._width, clip._height*2, 0, 20);
		Mask=clipMask;
		Target=clip;
		clip.setMask(clipMask);
		
		if(velocidad==undefined){ velocidad=10;}
		
		var destino:Number; //-> el x o y al que hay que llegar
		var eje:String; //-> string que determina el eje que se mueve
		var tipo:Number; //-> positivo o negativo (pa delante o pa tras)
		
		switch(direccion){
			case "left":
				destino=clipMask._x;
				clipMask._x=(clipMask._x)-(clipMask._width);
				eje="_x";
				tipo=1;
				break;
			case "right":
				destino=clipMask._x;
				clipMask._x=(clipMask._x)+(clipMask._width);
				eje="_x";
				tipo=-1;
				coef=0.94;
				break;
			case "top":
				destino=clipMask._y;
				clipMask._y=(clipMask._y)-(clipMask._height);
				eje="_y";
				tipo=1;
				velocidad=velocidad-30;
				break;
			case "bottom":
				destino=clipMask._y;
				clipMask._y=(clipMask._y)+(clipMask._height);
				eje="_y";
				tipo=-1;
				coef=0.94;
				velocidad=velocidad-30;
				break;
			default:
				destino=clipMask._x;
				clipMask._x=(clipMask._x)-(clipMask._width);
				eje="_x";
				tipo=1;
		}
		funcionando=true;
		nInterval=setInterval(barrer, 25-(velocidad), clipMask, destino,eje,tipo, this);
	}
	
	public function terminar(){
		clearInterval(nInterval);
		Mask.removeMovieClip();
		Target.setMask(null);
		funcionando=false;
		if(listener!=undefined){
			listener.terminar(Target);
		}
	}
	
	public function addListener(list:Object){
		listener=list;
	}
	private function barrer(clipMask:MovieClip, destino:Number,eje:String,tipo:Number,root:Barredor){
		var evaluacion:Boolean=clipMask[eje]+root.nNumero*tipo>destino;
		var evaluacion2:Boolean=clipMask[eje]+root.nNumero*tipo<destino;
		if(clipMask[eje]>=(destino-2) && tipo==1){
			clipMask[eje]=destino;
			root.terminar();
		} else if(clipMask[eje]<=(destino+2) && tipo==-1){
			clipMask[eje]=destino;
			root.terminar();
		} else if(evaluacion && tipo==1){
			clipMask[eje]=destino;
			root.terminar();
		} else if(evaluacion2 && tipo==-1){
			clipMask[eje]=destino;
			root.terminar();
		}
		else {
			if(clipMask[eje]>(destino+60*tipo)){
				root.nNumero=root.nNumero*root.coef;
			}
		
		clipMask[eje]+=root.nNumero*tipo;
		updateAfterEvent();
		}
	}
}	